<?php

/**
 * EJEMPLAR actions.
 *
 * @package    OPENBIBLIOSOFT
 * @subpackage EJEMPLAR
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 12479 2008-10-31 10:54:40Z fabien $
 */
class EJEMPLARActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $request)
  {
	if($this->getUser()->getAttribute('codigoUsuario') == null)
	{
		return  $this->renderText("<script type='text/javascript'> window.location = 'Entrada'; </script> ");
	}
  }
  
	public function executeListar()
	{
		$buscar = $this->getRequestParameter('Busqueda');
		$buscar = "%".$buscar."%";
		$campo = $this->getRequestParameter('Campo');
		
		$conexion = new Criteria();
		//$conexion->addJoin(EjemplarPeer::ID, EjemplarPeer::ID);

		if($campo == 'Isbn'){ $conexion->add(EjemplarPeer::ISBN, $buscar, Criteria::LIKE);}
		if($campo == 'Estado'){ $conexion->add(EjemplarPeer::ESTADO, $buscar, Criteria::LIKE);}
		if($campo == 'Sala'){ $conexion->add(EjemplarPeer::SALA, $buscar, Criteria::LIKE);}
		if($campo == 'Pasillo'){ $conexion->add(EjemplarPeer::PASILLO, $buscar, Criteria::LIKE);}
		if($campo == 'Estante'){ $conexion->add(EjemplarPeer::ESTANTE, $buscar, Criteria::LIKE);}
		if($campo == 'Cajon'){ $conexion->add(EjemplarPeer::CAJON, $buscar, Criteria::LIKE);}
		if($campo == 'Todos')
		{		
			$c1 = $conexion->getNewCriterion(EjemplarPeer::ISBN, $buscar, Criteria::LIKE);
			$c2 = $conexion->getNewCriterion(EjemplarPeer::ESTADO, $buscar, Criteria::LIKE);
			$c3 = $conexion->getNewCriterion(EjemplarPeer::SALA, $buscar, Criteria::LIKE);
			$c4 = $conexion->getNewCriterion(EjemplarPeer::PASILLO, $buscar, Criteria::LIKE);
			$c5 = $conexion->getNewCriterion(EjemplarPeer::ESTANTE, $buscar, Criteria::LIKE);
			$c6 = $conexion->getNewCriterion(EjemplarPeer::CAJON, $buscar, Criteria::LIKE);
			$c5->addOr($c6);
			$c4->addOr($c5);
			$c3->addOr($c4);
			$c2->addOr($c3);
			$c1->addOr($c2);
			$conexion->add($c1);
		}
		
		$numeroEjemplares = EjemplarPeer::doCount($conexion);
		$conexion->setLimit($this->getRequestParameter('limit'));
		$conexion->setOffset($this->getRequestParameter('start'));
		$ejemplars = EjemplarPeer::doSelect($conexion);
		$pos = 0;
		$nbrows=0;
		$datos;
		
		foreach ($ejemplars As $temporal)
		{
			$datos[$pos]['ejemplarId']=$temporal->getIdejemplar();
			$datos[$pos]['ejemplarIsbn']=$temporal->getIsbn();
			$datos[$pos]['ejemplarTitulo']=$temporal->getLibro()->getTitulo();
			$datos[$pos]['ejemplarEstado']=$temporal->getEstado();
			$datos[$pos]['ejemplarSala']=$temporal->getSala();
			$datos[$pos]['ejemplarPasillo']=$temporal->getPasillo();
			$datos[$pos]['ejemplarEstante']=$temporal->getEstante();
			$datos[$pos]['ejemplarCajon']=$temporal->getCajon();
			
			$pos++;
			$nbrows++;
		}
		
		if($nbrows>0){
			$jsonresult = json_encode($datos);
			return  $this->renderText('({"total":"'.$numeroEjemplares.'","results":'.$jsonresult.'})');
		}
		else {
			return  $this->renderText('({"total":"0", "results":""})');
		}
	}
	
	public function executeGuardar()
	{
		$ejemplar = new Ejemplar();
		//$ejemplar->setId($this->getRequestParameter('Id'));
		$ejemplar->setIsbn($this->getRequestParameter('Isbn'));
		$ejemplar->setEstado($this->getRequestParameter('Estado'));
		$ejemplar->setSala($this->getRequestParameter('Sala'));
		$ejemplar->setPasillo($this->getRequestParameter('Pasillo'));
		$ejemplar->setEstante($this->getRequestParameter('Estante'));
		$ejemplar->setCajon($this->getRequestParameter('Cajon'));

		try
		{
			$ejemplar->save();
		}
		catch (Exception $excepcionUsuario)
		{
			return  $this->renderText("({success: false, errors: { reason: 'Exception: Hubo un problema creando el ejemplar: ".$this->getRequestParameter('Nombre')."'}})");
		}
		return  $this->renderText("({success: true, mensaje:'El ejemplar fue creado exitosamente'})");
	}
	
	public function executeActualizar()
	{
		$ejemplarIdViejo = $this->getRequestParameter('IdViejo');
		$conexion = new Criteria();
		$conexion->add(EjemplarPeer::IDEJEMPLAR, $ejemplarIdViejo);
		$ejemplar = EjemplarPeer::doSelectOne($conexion);
		
		//$ejemplar->setIsbn($this->getRequestParameter('Isbn'));
		$ejemplar->setEstado($this->getRequestParameter('Estado'));
		$ejemplar->setSala($this->getRequestParameter('Sala'));
		$ejemplar->setPasillo($this->getRequestParameter('Pasillo'));
		$ejemplar->setEstante($this->getRequestParameter('Estante'));
		$ejemplar->setCajon($this->getRequestParameter('Cajon'));

		if($ejemplar)
		{
			  	try
		      	{
		        	$ejemplar->save();
		      	}
		      	catch (Exception $excepcionEjemplar)
		      	{
		          	return  $this->renderText("({success: false, errors: { reason: 'Exception: Problemas al actualizar el ejemplar: ".$this->getRequestParameter('Nombre')."'}})");
		        
		      	}
				return  $this->renderText("({success: true, mensaje:'El ejemplar fue actualizado exitosamente'})");
		} else {
			return  $this->renderText("({success: false, errors: { reason: 'No se a actualizado el ejemplar correctamente'}})");
		}
	}
	
	public function executeEliminar()
	{
		$id = $this->getRequestParameter('Id');

		$conexion = new Criteria();
		$conexion->add(EjemplarPeer::IDEJEMPLAR, $id);
		if($conexion)
		{
			$ejemplar = EjemplarPeer::doSelectOne($conexion);
			
			try
			{
				$ejemplar->delete();
			}
			catch (Exception $excepcionEjemplar)
			{
				return  $this->renderText("({success: false, errors: { reason: 'Exception: No se pudo eliminar el ejemplar'}})");
			}
			return  $this->renderText("({success: true, mensaje:'El ejemplar fue eliminado exitosamente'})");
		}
		else
		{
			return  $this->renderText("({success: false, errors: { reason: 'No se pudo eliminar el ejemplar'}})");
		}
	}
	
	public function executeListarLibros()
	{
		
		$conexion = new Criteria();
		$numeroLibros = LibroPeer::doCount($conexion);
		$libros = LibroPeer::doSelect($conexion);
		$pos = 0;
		$nbrows=0;
		$datos;
		
		foreach ($libros As $temporal)
		{
			$datos[$pos]['ejemplarIsbn']=$temporal->getIsbn();
			$datos[$pos]['ejemplarTitulo']=$temporal->getTitulo();
			
			$pos++;
			$nbrows++;
		}
		
		if($nbrows>0){
			$jsonresult = json_encode($datos);
			return  $this->renderText('({"total":"'.$numeroLibros.'","results":'.$jsonresult.'})');
		}
		else {
			return  $this->renderText('({"total":"0", "results":""})');
		}
	}
}
